/**
 * 普通用户: 
 * 查看实时路况信息：普通用户需要能够查看当前各主要路段和路口的实时交通情况，包括车辆流量、拥堵情况等，以便选择最佳行车路线。
 * 查询信号灯状态和变化时间：用户需要知道当前路口信号灯的状态（红灯、黄灯、绿灯）及其剩余时间，以便合理规划行驶。
 * 反馈交通问题：用户希望能够通过系统反馈交通问题，如信号灯故障、交通事故等，并查看反馈处理进度。
 * 实时监控模块 动态调控(仅查看) 路况查询 反馈和预警(新增反馈和查看自己反馈的)
 */
/**
 * 交通管理人员: 
 * 实时监控交通情况：交通管理人员需要实时监控城市各主要路段和路口的车流情况，以便及时发现和处理交通异常情况。
 * 动态调整信号灯配时：根据实时车流数据，交通管理人员需要能够动态调整信号灯配时，以优化车流，减少交通拥堵。
 * 处理反馈和报警：接收并处理来自普通用户的反馈和报警信息，如信号灯故障、交通事故等，确保问题及时解决
 * 分析历史交通数据：交通管理人员需要对历史交通数据进行分析，识别车流模式，制定交通优化方案，提高交通管理效率。
 * 发布交通预警和通知：根据实际交通情况和预判，交通管理人员需要发布交通预警和通知，指导市民合理出行。
 * 所有权限都有
 */

/**
 * 市政规划人员
 * 获取详细的交通数据：市政规划人员需要详细的交通流量和信号灯配时数据，用于交通规划和基础设施建设。
 * 分析车流模式：通过对交通数据的分析，市政规划人员需要了解车流模式，识别交通瓶颈，预测未来交通需求。
 * 制定交通基础设施规划：根据交通数据分析结果，市政规划人员需要制定交通基础设施的建设和改造计划，提升城市交通系统的整体效率和安全性。
 * 实时监控模块 动态调控(仅查看) 路况查询 数据分析
 */
/**
 * 动态路由
 */

import Layout from '@/layout'
import store from '@/store'
import router from '@/router'
import { constantRoutes } from '@/router'

const dynamicRouter = [
    {
        path: '/dynamicControl',
        component: Layout,
        name: 'dynamicControl',
        children: [
            {
                path: '',
                component: () => import('@/views/dynamicControl/index'),
                meta: { title: '动态调控', icon: 'table' }
            }
        ]
    },
]

const FeedbackAndAlarmRouter = [
    {
        path: '/FeedbackAndAlarm',
        component: Layout,
        name: 'FeedbackAndAlarm',
        children: [
            {
                path: '',
                component: () => import('@/views/FeedbackAndAlarm/index'), // Parent router-view
                meta: { title: '反馈问题管理', icon: 'nested' },
            },
        ]
    }
]

const trafficControlRouter = [
    {
        path: '/trafficControl',
        component: Layout,
        children: [
            {
                path: '',
                component: () => import('@/views/trafficControl/index'),
                meta: { title: '交通管制', icon: 'link' }
            }
        ]
    },
]

const trafficConditionRouter = [
    {
        path: '/trafficCondition',
        component: Layout,
        children: [
            {
                path: '',
                component: () => import('@/views/trafficCondition/index'),
                meta: { title: '交通事故', icon: 'link' }
            }
        ]
    },
]


// 获取登录人身份类型
const getUserType = () => {
    // 从 stroe 中获取登录人身份类型
    return store.getters.userType
}
function addRoutes() {
    const userType = getUserType();
    if (userType === 'NORMAL_USER') { // 普通用户
        router.options.routes = uniqueRouter([...constantRoutes, ...dynamicRouter, ...FeedbackAndAlarmRouter])
    } else if (userType === 'MANAGER_USER') { // 交通管理人员
        router.options.routes = uniqueRouter([...constantRoutes, ...dynamicRouter, ...FeedbackAndAlarmRouter, ...trafficControlRouter, ...trafficConditionRouter])
    } else if (userType === 'PLAN_USER') { // 市政规划人员
        router.options.routes = uniqueRouter([...constantRoutes, ...dynamicRouter, ...trafficControlRouter])
    }
}

// 路由去重
function uniqueRouter(arr) {
    const res = [];
    const obj = {};
    for (let i = 0; i < arr.length; i++) {
        if (!obj[arr[i].path]) {
            res.push(arr[i]);
            obj[arr[i].path] = 1;
        }
    }
    return res;
}

export {
    dynamicRouter,
    FeedbackAndAlarmRouter,
    trafficControlRouter,
    trafficConditionRouter,
    addRoutes
}
